End.
原
Element-UI 表单验证规则rules,配置参数说明
先来看以下这段代码。这里el-form表单,表单验证rules。
实现效果:
<el-form ref="dataForm" :inline="true" :rules="rules" :model="temp" label-position="top" label-width="auto">
<el-form-item label="手机号" prop="phone">
#省略代码
</el-form-item>
<el-form-item label="邮箱" prop="email">
#省略代码 </el-form-item>
#省略代码
</el-form>
rules配置参数说明
1、required 是否必填
可选,true、false。当开启时,表单字段为必填,左侧样式红色*号标记。
例如:
rules: {
phone: [
{ required: true, message: '手机必须填写', trigger: 'change' }
]
}
2、message 验证不通过告警文字
3、trigger 触发方式
可选,blur:失去焦点;change: 值变更
4、min、max 最小值,最大值
type默认为string,min和max则为最小长度和最大长度。
type为number,min和max则为最小值和最大值。
PS:type为number时,需要在绑定时写 v-model.number='age',但input的type 不能设置为number,否则获取的值会一直被视为是字符串。
如:
rules: { login_name: [ { required: true, message: '账号必须填写', trigger: 'change' }, { required: true, min: 5, max: 32, message: '长度在 5 到 32 个字符', trigger: 'blur' } ]
}
5、type,默认string
可选,string、number、date、datetime 等等。
如:
{ type: 'date', required: true, message: '请选择日期', trigger: 'change' }
6、pattern 正则匹配
使用正则表达式验证数据。
例子:正则验证手机号码和邮箱,对应开头。
rules: {
phone: [{
pattern: /^1[3-9]\d{9}$/,
message: '手机号格式错误',
trigger: 'blur'
}],
email: [{
pattern: /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,8})$/,
message: '邮箱格式错误',
trigger: 'blur'
}]
}
7、validator 自定义检查方法
参数 rule, value, callback。
检测成功或不成功都需要手动调用callback , 验证不成功时 callback(new Error('提示信息')) 。
注意:当在下面的对象中有message时则验证失败只会显示message的值。
例子:
rules: { password: [{ required: true, validator: (rule, value, callback) => {
if (!value) { callback(new Error('新密码不能为空')) } else if (value !== this.passwordData.con_password) { callback(new Error('两次密码不一致')) } else { callback() }
}, trigger: 'blur' }], con_password: [{ required: true, validator: (rule, value, callback) => { if (!value) { callback(new Error('新密码不能为空')) } else if (value !== this.passwordData.password) { callback(new Error('两次密码不一致')) } else { callback() } }, trigger: 'blur' }] }
当然也可以写成:
rules: { password: [{ required: true, validator: this.passwordValidator, trigger: 'blur' }], con_password: [{ required: true, validator: this.conPasswordValidator, trigger: 'blur' }] }
... 省略代码, method里面写
passwordValidator(rule, value, callback) { if (!value) { callback(new Error('新密码不能为空')) } else if (value !== this.passwordData.con_password) { callback(new Error('两次密码不一致')) } else { callback() } }, conPasswordValidator(rule, value, callback) { if (!value) { callback(new Error('确认密码不能为空')) } else if (value !== this.passwordData.password) { callback(new Error('两次密码不一致')) } else { callback() } },
... 省略代码
End.